home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / misc / zpoint_3_14.lha / zpoint-3.14 / Rexx / ArchiveHandler.zprx < prev    next >
Text File  |  1995-12-11  |  8KB  |  279 lines

  1. /*
  2.    $VER: ArchiveHandler.zprx V1.1 (9.12.95) © Copyright Nils Görs
  3.  
  4.  
  5.    Funktionsbeschreibung:
  6.  
  7.     Dies  ist  ein  ARexx-Skript für Zodiac's Point, mit dem man jedem
  8.     Brett   ein   spezielles  Archivbrett  zuteilen  kann.   Markierte
  9.     Nachrichten  können  dann aus dem Originalbrett in das Archivbrett
  10.     kopiert werden, um mehr übersicht in ein Brett zu bringen.
  11.     Aus   dem   Archivbrett  kann  eine  Nachricht  auch  ganz  normal
  12.     beantwortet  werden da die  gleichen Attribute gesetzt werden, wie
  13.     bei dem Originalbrett.
  14.  
  15.  
  16.    Hinweise zur Installation:
  17.  
  18.     Kopieren sie dieses Skript in  das  Rexx-Verzeichnis  von  ZP  und
  19.     fügen  sie  danach  der  Datei  'fkeys.zp'  auf Wunsch den Eintrag
  20.     "F1:SYS:Rexxc/RX ZPOINT:Rexx/ArchiveHandler.zprx %s" hinzu.
  21.  
  22.     Alternativ hierzu können Sie aber auch folgende Zeile in die Datei
  23.     usermenu.zp einfügen um das Skript aus dem User-Menu auszuwählen:
  24.  
  25.     *Archive-Handler
  26.     SYS:Rexxc/RX Zodiac:Rexx/ArchiveHandler.zprx %s
  27.  
  28.  
  29.     Sie erreichen den Autor wie folgt:
  30.  
  31.        Nils Görs              Tel. : +49 (0)202 784258
  32.        Kaiserstr. 97a         EMail: N.Goers@Art-Line.de
  33.        42329 Wuppertal          oder über das ZP-Support-Brett.
  34.  
  35.    Verwenden Sie bitte nach Möglichkeit elektronische Post!
  36.  
  37. */
  38.  
  39.  
  40. /* Zusatz für den Brettnamen */
  41. ArchivSuffix = "/Archiv"
  42. /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  43.  *      Bitte geben Sie hier ihre Präferenzen ein !                *
  44.  *******************************************************************/
  45.  
  46. /*******************************************************************
  47.  *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
  48.  *******************************************************************/
  49. NL = '0a'x
  50.  
  51. OPTIONS RESULTS
  52.  
  53. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
  54. PARSE ARG zpPort
  55. IF zpPort == "" THEN
  56.    zpPort = "ZPoint"
  57. ADDRESS VALUE zpPort
  58.  
  59. /* öffne alle nötigen libraries - wenn nicht möglich Programmende */
  60. IF ~SHOW('LIBRARIES','rexxtricks.library') THEN
  61.   IF ~ADDLIB('rexxtricks.library',0,-30,0) THEN
  62.     EXIT
  63.  
  64. /****************************
  65.  *** Brettliste einlesen! ***
  66.  ****************************/
  67. HOMEPATH
  68. Heimatpfad = Result
  69. Dateiname = Heimatpfad||"/boardlist.zp"
  70.  
  71. IF RXTR_READFILE(Dateiname,Boardlist) == 0 THEN
  72.  DO
  73.   requestnotify "Kann" Dateiname "nicht öffnen!"
  74.   EXIT
  75.  END
  76.  
  77. BOARDINFO LABEL
  78. BOARDLABEL=result
  79. BOARDINFO PATH
  80. BOARDPATH=result
  81. boardlabel_upper = UPPER(boardlabel)
  82.  
  83.  
  84. WHICHLEVEL
  85.  SELECT
  86.   WHEN result == "BOARD"     then CALL _ArchiviereMails
  87.   WHEN result == "BOARDMENU" then CALL _CreateBoard
  88.  OTHERWISE
  89.   requestnotify "Bitte begeben Sie sich in die"NL,
  90.                 "Brettliste oder in ein Brett."
  91.  END
  92.   EXIT(0)
  93.  
  94. /**************************************
  95.  *** Nachrichten aus einem Brett in ***
  96.  *** das Archivbrett weiterleiten.  ***
  97.  **************************************/
  98. _ArchiviereMails:
  99.   SELECT
  100.    WHEN INDEX(Boardlabel,'(Spool') ~= 0 THEN
  101.     requestnotify "Das Spool-Brett kann nicht archiviert werden!"
  102.    WHEN INDEX(Boardlabel,'archiv') ~= 0 THEN
  103.     requestnotify "Ein Nachrichtenarchiv zu archivieren ist krank! :)"
  104.   OTHERWISE
  105.     CALL _forwardNow
  106.   END
  107. EXIT(0)
  108.  
  109. _ForwardNow:
  110. IF RXTR_LSEARCH("B:"Boardlabel||ArchivSuffix,Boardlist,,,'PATTERN') = -1 THEN DO
  111.   requestresponse "Es existiert noch kein Archivbrett für",
  112.                 NL boardlabel,
  113.                 NL"Soll ein Archivbrett eingerichtet werden?"
  114.    IF (RC) == 0 THEN RETURN          /* Nein, es soll keines eingerichtet werden */
  115.  
  116.  
  117. /***************************************************
  118.  *** es soll ein Archivbrett eingerichtet werden ***
  119.  ***************************************************/
  120. COUNT LISTED
  121. mailsListed = result
  122. IF mailslisted ~= 0 THEN CALL _merkeMails    /* Es sind Nachrichten markiert!*/
  123.   BOARDMENU                                  /* Brett verlassen. */
  124.   CALL _StartCreating                        /* Archivbrett erstellen! */
  125.   ENTERBOARD                                 /* und wieder ins Brett. */
  126.    IF mailsListed ~= 0 THEN CALL _SelectMails/* die Nachrichten erneut markieren! */
  127. END
  128.  
  129. more = 1
  130.  JUMPTOMESSAGE 1
  131.   MESSAGEINFO LISTED
  132.   IF Result == 1 THEN  FORWARDMESSAGE Boardlabel||ArchivSuffix 'INTERNAL'
  133.  
  134. DO WHILE more
  135.   JUMPTOMESSAGE LISTED
  136.   more = (RC)
  137.  IF more == 1 THEN FORWARDMESSAGE Boardlabel||ArchivSuffix 'INTERNAL'
  138. END
  139. RETURN
  140.  
  141. /******************************************************
  142.  *** da die Markierungen beim verlassen des Brettes ***
  143.  *** verloren gehen, werden wir sie uns merken ;-)  ***
  144.  ******************************************************/
  145. _merkeMails:
  146. k = 1
  147. maillist.0 = mailsListed
  148. more = 1
  149.  JUMPTOMESSAGE 1
  150.  MESSAGEINFO LISTED
  151.   IF result == 1 THEN CALL _mailsListed
  152.  
  153.  DO WHILE more
  154.   JUMPTOMESSAGE LISTED
  155.   more = (RC)
  156.   IF more == 1 THEN CALL _mailsListed
  157.  END
  158. RETURN
  159.  
  160. /*******************************************
  161.  *** die absolute Position der Nachricht ***
  162.  *** wird in eine Stem-Variable gelesen. ***
  163.  *******************************************/
  164. _mailsListed:
  165. MESSAGEINFO POSITION
  166. mailList.k = result
  167. k = k+1
  168. RETURN
  169.  
  170. /****************************************
  171.  *** Markierungen, wieder herstellen! ***
  172.  ****************************************/
  173. _Selectmails:
  174.  DO k = 1 to maillist.0
  175.   JUMPTOMESSAGE maillist.k
  176.   SELECTMESSAGE
  177.  END
  178. RETURN
  179.  
  180. /*******************************************
  181.  *** hier wird ein Archivbrett erstellt! ***
  182.  *******************************************/
  183. _CreateBoard:
  184.   SELECT
  185.    WHEN INDEX(Boardlabel_upper,'(SPOOL') ~= 0 THEN
  186.     requestnotify "Das Spool-Brett kann nicht archiviert werden!"
  187.    WHEN INDEX(Boardlabel_upper,'ARCHIV') ~= 0 THEN
  188.     requestnotify "Ein Nachrichtenarchiv zu archivieren ist krank! :)"
  189.    OTHERWISE
  190.     CALL _CreateNow
  191.    END
  192. EXIT(0)
  193.  
  194. _CreateNow:
  195. IF RXTR_LSEARCH("B:"Boardlabel||ArchivSuffix,Boardlist,,,'PATTERN') ~= -1 THEN DO
  196.   requestnotify "Es existiert bereits ein Archivbrett",
  197.               NL"für" boardlabel
  198.   RETURN
  199. END
  200.  
  201. requestresponse "Möchten Sie wirklich für" Boardlabel,
  202.               NL"ein Archivbrett erstellen ?"
  203. IF (RC) == 0 THEN RETURN
  204.  
  205. _StartCreating:
  206. /****************************************
  207.  *** den richtigen Eintrag raussuchen ***
  208.  *** dafür ein Archivbrett einrichten ***
  209.  ****************************************/
  210. nummer=RXTR_LSEARCH("B:"Boardlabel,Boardlist,,,'PATTERN')
  211.  
  212. B_Eintrag1 = 0
  213. S_Eintrag1 = 0
  214. D_Eintrag1 = 0
  215.  
  216. DO UNTIL boardlist.nummer = "-"
  217.  SELECT
  218.   WHEN INDEX(boardlist.nummer,"D:") ~= 0 THEN DO
  219.    D_Eintrag=boardlist.nummer
  220.    D_Eintrag1 = 1
  221.   END
  222.   WHEN INDEX(boardlist.nummer,"S:") ~= 0 THEN DO
  223.    S_Eintrag=boardlist.nummer
  224.    S_Eintrag1 = 1
  225.   END
  226.  OTHERWISE
  227.   NOP
  228.  END
  229. nummer = nummer+1
  230. END
  231.  
  232.  ADDRESS COMMAND "makedir" '"'Boardpath||ArchivSuffix'"'
  233.  CREATEBOARD '"'Boardlabel||ArchivSuffix'"' Boardpath||ArchivSuffix
  234.  
  235.  
  236. /************************************************************
  237.  *** falls Ralph einmal den CREATEBOARD erweitern sollte, ***
  238.  *** woran ich fest glaube, dann wird diese Honselroutine ***
  239.  *** wieder entfernt !                                    ***
  240.  ************************************************************/
  241. IF S_Eintrag1 + D_Eintrag1 == 0 THEN B_Eintrag1 = 1
  242.   CALL RXTR_READFILE(Dateiname,Boardlist)
  243.   till_Number=RXTR_LSEARCH("B:"Boardlabel||ArchivSuffix,Boardlist,,,'PATTERN')
  244.  
  245. j = 1
  246.    DO i = 1 to till_Number+1
  247.     BoardlistNEW.i = Boardlist.j
  248.                      j = j+1
  249.    END
  250.  
  251. IF S_Eintrag1 == 1 THEN DO
  252.  BoardlistNEW.i = S_Eintrag
  253.  i = i +1
  254. END
  255.  
  256. IF D_Eintrag1 == 1 THEN DO
  257.  BoardlistNEW.i = D_Eintrag
  258.  i = i +1
  259. END
  260.  
  261. IF B_Eintrag1 = 1 THEN DO
  262.  BoardlistNEW.i = "S:"Boardlabel
  263.  i = i +1
  264. END
  265.  
  266. DO j = j to Boardlist.0
  267.   BoardlistNEW.i = Boardlist.j
  268.   i = i+1
  269. END
  270.  BoardlistNEW.0 = i-1
  271. CALL RXTR_WRITEFILE(Dateiname,BoardlistNEW)
  272.  
  273.  MAINMENU
  274.  BOARDMENU
  275.  JUMPTOBOARD "NAME" Boardlabel
  276.  
  277. RETURN
  278. /*EOS*/
  279.